home *** CD-ROM | disk | FTP | other *** search
/ Aminet 25 / Aminet 25 (1998)(GTI - Schatztruhe)[!][Jun 1998].iso / Aminet / gfx / edit / smearshadow.lha / smearshadow.ifx next >
Encoding:
Text File  |  1998-02-22  |  6.5 KB  |  299 lines

  1. /*
  2.  * $VER: smearshadow 0.9
  3.  * by Carl Licke / Turbid design
  4.  * mailto:carl.licke@swipnet.se
  5.  * http://home2.swipnet.se/~w-24653/
  6.  *
  7.  * Arexx script for ImageFX
  8.  */
  9.  
  10. OPTIONS RESULTS
  11.  
  12. xincr  =GETCLIP('smearshadow_xincr')
  13. yincr  =GETCLIP('smearshadow_yincr')
  14. shade  =GETCLIP('smearshadow_shade')
  15. gauss  =GETCLIP('smearshadow_gauss')
  16. length =GETCLIP('smearshadow_length')
  17. angle  =GETCLIP('smearshadow_angle')
  18. mgik   =GETCLIP('smearshadow_mgik')
  19. aalias =GETCLIP('smearshadow_aalias')
  20. bgswap =GETCLIP('smearshadow_bgswap')
  21. shcol  =GETCLIP('smearshadow_shcol')
  22. bgcol  =GETCLIP('smearshadow_bgcol')
  23. disp   =GETCLIP('smearshadow_disp')
  24. ofsx   =GETCLIP('smearshadow_ofsx')
  25. ofsy   =GETCLIP('smearshadow_ofsy')
  26.  
  27. /* ------ here you may change the defaults ------ */
  28. IF xincr=''  THEN xincr=25
  29. IF yincr=''  THEN yincr=25
  30. IF shade=''  THEN shade=80
  31. IF gauss=''  THEN gauss=2
  32. IF length='' THEN length=15
  33. IF angle=''  THEN angle=135
  34. IF mgik=''   THEN mgik=0
  35. IF aalias='' THEN aalias=0
  36. IF bgswap='' THEN bswap=0
  37. IF shcol=''  THEN shcol=0
  38. IF bgcol=''  THEN bgcol=0
  39. IF disp=''   THEN disp=0
  40. IF ofsx=''   THEN ofsx=5
  41. IF ofsy=''   THEN ofsy=5
  42.  
  43. Gadget.1 = 'I/140/18/x size increase/'xincr
  44. Gadget.2 = 'I/140/35/y size increase/'yincr
  45. Gadget.3 = 'I/140/52/shade (0-100)/'shade
  46. Gadget.4 = 'I/140/69/softness (0-5)/'gauss
  47. Gadget.5 = 'I/140/86/length (1-50)/'length
  48. Gadget.6 = 'I/140/103/angle (-180 - 180)/'angle
  49. Gadget.7 = 'X/230/19/magic scissors/'mgik
  50. Gadget.8 = 'X/230/36/anti alias/'aalias
  51. Gadget.9 = 'X/230/53/background from swap/'bgswap
  52. Gadget.10= 'X/230/70/pick color for smear/'shcol
  53. Gadget.11= 'X/230/87/pick color for backg./'bgcol
  54. Gadget.12= 'X/230/104/disperse/'disp
  55. Gadget.13= 'X/230/121/save these settings/1'
  56. Gadget.14= 'I/140/120/offset x/'ofsx
  57. Gadget.15= 'I/140/137/offset y/'ofsy
  58.  
  59. ComplexRequest '"smearshadow"' 15 Gadget 427 174
  60. IF rc ~= 0 THEN EXIT
  61.  
  62. xincr  = result.1
  63. yincr  = result.2
  64. shade  = result.3
  65. gauss  = result.4
  66. length = result.5
  67. angle  = result.6
  68. mgik   = result.7
  69. aalias = result.8
  70. bgswap = result.9
  71. shcol  = result.10
  72. bgcol  = result.11
  73. disp   = result.12
  74. saveit = result.13
  75. ofsx   = result.14
  76. ofsy   = result.15
  77.  
  78. ifxver=0
  79. ADDRESS COMMAND 'list ImageFX:Matrix/GuassianLow ImageFX:Matrix/GaussianMedium ImageFX:Matrix/GuassianHigh >NIL:'
  80. IF rc = 0 THEN ifxver=1
  81. ADDRESS COMMAND 'list ImageFX:Storage/Convolve/GaussianLow ImageFX:Storage/Convolve/GaussianMedium ImageFX:Storage/Convolve/GaussianHigh >NIL:'
  82. IF rc = 0 THEN ifxver=2
  83. IF ifxver=0 THEN DO
  84.   RequestNotify 'Error! Please contact carl.licke@swipnet.se'
  85.   EXIT
  86. END
  87.  
  88. IF saveit=1 THEN DO
  89.   CALL SETCLIP('smearshadow_xincr', xincr)
  90.   CALL SETCLIP('smearshadow_yincr', yincr)
  91.   CALL SETCLIP('smearshadow_shade', shade)
  92.   CALL SETCLIP('smearshadow_gauss', gauss)
  93.   CALL SETCLIP('smearshadow_length', length)
  94.   CALL SETCLIP('smearshadow_angle', angle)
  95.   CALL SETCLIP('smearshadow_mgik', mgik)
  96.   CALL SETCLIP('smearshadow_aalias', aalias)
  97.   CALL SETCLIP('smearshadow_bgswap', bgswap)
  98.   CALL SETCLIP('smearshadow_shcol', shcol)
  99.   CALL SETCLIP('smearshadow_bgcol', bgcol)
  100.   CALL SETCLIP('smearshadow_disp', disp)
  101.   CALL SETCLIP('smearshadow_ofsx', ofsx)
  102.   CALL SETCLIP('smearshadow_ofsy', ofsy)
  103. END
  104.  
  105. shr=0
  106. shg=0
  107. shb=0
  108. bgr=255
  109. bgg=255
  110. bgb=255
  111.  
  112. GetPalette '0'
  113. PARSE VAR result r g b
  114.  
  115. IF bgcol=1 & bgswap=1 THEN DO
  116.   RequestNotify 'No background pick, you told me to use swap.'
  117.   bgcol=0
  118. END
  119.  
  120. IF shcol=1 THEN DO
  121.   ActiveColor 0
  122.   Message 'pick shadow color'
  123.   Pick
  124.   WaitFor SELECTUP
  125.   GetPalette '-1'
  126.   PARSE VAR result shr shg shb
  127.   SetPalette 0 r g b
  128.   Message ''
  129. END
  130.  
  131. IF bgcol=1 THEN DO
  132.   ActiveColor 0
  133.   Message 'pick background color'
  134.   Pick
  135.   WaitFor SELECTUP
  136.   GetPalette '-1'
  137.   PARSE VAR result bgr bgg bgb
  138.   Message ''
  139. END
  140.  
  141. Redraw Off
  142. SaveUndo
  143. Undo Off
  144. AlphaChannel Off
  145. EdgeMode Normal 0
  146. FillMode Solid 0 0 0 SMOOTH
  147. Grey2Color
  148. Transparency 0 0 1
  149.  
  150. GetMain
  151. PARSE VAR result name width height depth
  152.  
  153. IF bgswap=1 THEN DO
  154.   Swap
  155.   SaveBufferAs ILBM "T:smearshadowswaptemp.ilbm"
  156.   Swap
  157.   SaveBufferAs ILBM "T:smearshadowtemp.ilbm"
  158. END
  159.  
  160. newwidth=width+xincr
  161. newheight=height+yincr
  162.  
  163. CALL pickitup
  164.  
  165. Scale newwidth newheight+8 BORDER
  166.  
  167. ClearBuffer bgr bgg bgb FORCE
  168.  
  169. ActiveColor 0
  170. SetPalette '-1' shr shg shb
  171.  
  172. IF bgswap=1 THEN SetPalette '-1' 0 0 0
  173.  
  174. Blend shade
  175. DrawMode Color
  176. NewArea
  177. AddArea x y
  178. FreeDraw
  179. DrawMode Normal
  180. Blend 100
  181.  
  182. IF ifxver=1 THEN DO
  183. IF gauss=1 THEN DO
  184.   Convolve "Matrix/GuassianLow"
  185. END
  186. IF gauss=2 THEN DO
  187.   Convolve "Matrix/GaussianMedium"
  188. END
  189. IF gauss=3 THEN DO
  190.   Convolve "Matrix/GuassianHigh"
  191. END
  192. IF gauss=4 THEN DO
  193.   Convolve "Matrix/GuassianHigh"
  194.   Convolve "Matrix/GuassianHigh"
  195. END
  196. IF gauss=5 THEN DO
  197.   Convolve "Matrix/GuassianHigh"
  198.   Convolve "Matrix/GuassianHigh"
  199.   Convolve "Matrix/GuassianHigh"
  200. END
  201. END
  202.  
  203. IF ifxver=2 THEN DO
  204. IF gauss=1 THEN DO
  205.   Convolve "Storage/Convolve/GaussianLow"
  206. END
  207. IF gauss=2 THEN DO
  208.   Convolve "Storage/Convolve/GaussianMedium"
  209. END
  210. IF gauss=3 THEN DO
  211.   Convolve "Storage/Convolve/GaussianHigh"
  212. END
  213. IF gauss=4 THEN DO
  214.   Convolve "Storage/Convolve/GaussianHigh"
  215.   Convolve "Storage/Convolve/GaussianHigh"
  216. END
  217. IF gauss=5 THEN DO
  218.   Convolve "Storage/Convolve/GaussianHigh"
  219.   Convolve "Storage/Convolve/GaussianHigh"
  220.   Convolve "Storage/Convolve/GaussianHigh"
  221. END
  222. END
  223.  
  224. Crop 0 0 newwidth newheight
  225.  
  226. IF disp=1 THEN DO
  227.   Disperse 1
  228. END
  229.  
  230. MotionBlur angle length
  231.  
  232. IF bgswap=1 THEN DO
  233.   Negative
  234.   SaveAlphaAs ILBM "T:smearshadowalphatemp.ilbm"
  235.   Buffer2Alpha
  236.   PickupSwap
  237.   Region Full
  238.   ClearBuffer 0 0 0 FORCE
  239.   FillMode Tile 0 0 0 Smooth
  240.   FloodFill 0 0 1
  241.   FillMode Solid 0 0 0 Smooth
  242.   Swap
  243.   CreateBuffer newwidth newheight shr shg shb FORCE
  244.   Swap
  245.   Merge 100 ALPHA
  246.   Swap
  247.   KillAlpha
  248.   LoadBuffer "T:smearshadowtemp.ilbm" Force
  249.   CALL pickitup
  250.   LoadBuffer "T:smearshadowswaptemp.ilbm" Force
  251.   LoadAlpha "T:smearshadowalphatemp.ilbm" Force
  252.   Swap
  253.   ADDRESS COMMAND 'Delete "T:smearshadowtemp.ilbm" QUIET'
  254.   ADDRESS COMMAND 'Delete "T:smearshadowalphatemp.ilbm" QUIET'
  255.   ADDRESS COMMAND 'Delete "T:smearshadowswaptemp.ilbm" QUIET'
  256. END
  257.  
  258. IF aalias=1 THEN EdgeMode AntiAlias 0
  259.  
  260. NewArea
  261. AddArea x y
  262. FreeDraw
  263. EdgeMode Normal 0
  264. KillBrush
  265. SetPalette 0 r g b
  266. Redraw On
  267. Undo On
  268.  
  269. EXIT
  270.  
  271. pickitup:
  272.   IF mgik=1 THEN
  273.     MagicScissors
  274.   ELSE
  275.     Scissors
  276.   Box 0 0 width height
  277.   Region Full
  278.   IF (angle>90 & angle<180) | (angle=90) | (angle=180) | (angle=-180) THEN DO
  279.     BrushHandle 0 0
  280.     x=ofsx
  281.     y=ofsy
  282.   END
  283.   IF angle>0 & angle<90 THEN DO
  284.     BrushHandle width 0
  285.     x=newwidth-ofsx
  286.     y=ofsy
  287.   END
  288.   IF (angle>-90 & angle<0) | (angle=-90) | (angle=0) THEN DO
  289.     BrushHandle width height
  290.     x=newwidth-ofsx
  291.     y=newheight-ofsy
  292.   END
  293.   IF angle>-180 & angle<-90 THEN DO
  294.     BrushHandle 0 height
  295.     x=ofsx
  296.     y=newheight-ofsy
  297.   END
  298.   RETURN
  299.